package data;

/**
 * Term adalah kelas representasi term yang diekstrak dari dokumen
 * @author Muqtafi Akhmad
 */
public class Term {

    /**
     * mengisikan referensi ke term collection
     * @param collectionRef 
     */
    public void setCollectionRef(TermCollection collectionRef) {
        this.collectionRef = collectionRef;
    }

    /**
     * mendapatkan referensi ke term collection
     * @return referensi ke term collection
     */
    public TermCollection getCollectionRef() {
        return collectionRef;
    }
    /**
     * panjang maksimal sebuah term
     */
    public static Integer max_term_length = 50;
    /**
     * string dari term
     */
    private String termString;
    /**
     * statistik dari term
     */
    private Statistic statistic;
    /**
     * referensi ke term collection
     */
    private TermCollection collectionRef;

    /**
     * konstruktor term, dengan masukan term string
     * @param termString string term
     */
    public Term(String termString) {
        this.termString = termString;
    }

    /**
     * mengembalikan term string
     * @return representasi term string
     */
    @Override
    public String toString() {
        return this.getTermString();
    }

    /**
     * membandingkan satu term dan term lain dengan membandingkan representasi 
     * stringnya
     * @param object objek lain yang dibangingkan
     * @return apakah term sama dengan term lain
     */
    @Override
    public boolean equals(Object object) {
        Term objTerm = (Term) object;
        return this.getTermString().equals(objTerm.getTermString());
    }

    /**
     * mengembalikan term string
     * @return term string
     */
    public String getTermString() {
        return this.termString;
    }

    /**
     * mengisikan term string
     * @param termString term string
     */
    public void setTermString(String termString) {
        this.termString = termString;
    }

    /**
     * mengisikan objek statistic untuk mentatat statistik term
     * @param statistic objek statistik
     */
    public void setStatistic(Statistic statistic) {
        this.statistic = statistic;
    }

    /**
     * mengembalikan objek statistic dari term
     * @return objek statistik
     */
    public Statistic getStatistic() {
        return this.statistic;
    }
}
